
object work3 {
  def main(args: Array[String]): Unit = {

    // MusicPlayer类
    class MusicPlayer(var musicList: List[String], var currentMusic: String, var playMode: String) {
      // 添加音乐方法，接受一个音乐名参数，并将其添加到音乐列表中，打印添加成功信息
      def addMusic(musicName: String): Unit = {
        musicList = musicList :+ musicName // 将音乐名追加到音乐列表中
        println(s"Added $musicName to the music list.")
      }

      // 删除音乐方法，接受一个音乐名参数，并将其从音乐列表中删除，打印删除成功信息
      def deleteMusic(musicName: String): Unit = {
        musicList = musicList.filter(_ != musicName) // 将不等于音乐名的元素保留在音乐列表中
        println(s"Deleted $musicName from the music list.")
      }

      // 播放音乐方法，根据播放模式和当前播放的音乐，选择下一首要播放的音乐，并打印播放信息
      def playMusic(): Unit = {
        playMode match { // 根据播放模式进行匹配
          case "single" => // 单曲循环模式，不改变当前播放的音乐
            println(s"Playing $currentMusic in single loop mode.")
          case "shuffle" => // 随机播放模式，从音乐列表中随机选择一首作为当前播放的音乐
            currentMusic = musicList(scala.util.Random.nextInt(musicList.length)) // 随机生成一个索引并从列表中取出对应的元素
            println(s"Playing $currentMusic in shuffle mode.")
          case "order" => // 顺序播放模式，从当前播放的音乐开始按顺序选择下一首作为当前播放的音乐，如果到达列表末尾则回到第一首
            val currentIndex = musicList.indexOf(currentMusic) // 获取当前播放的音乐在列表中的索引位置
            val nextIndex = (currentIndex + 1) % musicList.length // 计算下一首要播放的音乐在列表中的索引位置，如果超过了长度则取余数回到第一首
            currentMusic = musicList(nextIndex) // 根据索引位置从列表中取出对应的元素作为当前播放的音乐
            println(s"Playing $currentMusic in order mode.")
          case _ => // 其他情况，默认为单曲循环模式
            println(s"Invalid play mode. Playing $currentMusic in single loop mode.")
        }

      }
    }

    val music = new MusicPlayer(musicList = List("a","b","c"), currentMusic = "ddd", playMode = "hangman")
    music.addMusic("aaa")
    music.deleteMusic("b")
    music.playMusic()
    music.playMode="order"

  }
}
